Nowadays, mobile apps have become indispensable parts of modern human life. Currently, average American users spend about three hours (177 minutes) per day on mobile devices, which is more than the average time spent on TV (168 minutes). An analysis in 2013 shows that 80% of time spent on the mobile devices is inside apps (e.g., games, news, productivity, utility, and social networking apps), and only 20% of time on the mobile devices is spent on mobile web, where the time spent on the mobile web remained flat in 2014 while the time spent inside apps increased. While the users spend much of their time inside apps, the users constantly download new mobile apps. Meanwhile, with explosive growth in the number of mobile apps in app stores (e.g., Apple iTunes, Google Play, Windows Phone Store, and BlackBerry App World), a search function in the app stores becomes essential. In July 2014, there are about 1.3 million apps and 1.2 million apps in Google Play app store and Apple App Store, respectively. As the number of apps is huge, it is extremely hard for the users to find apps without search or recommendation functions. For example, instead of listing all the apps, Google Play lists only recommended or popular apps because finding an app through a long list does not make sense any more. Moreover, in an app developer's view, new or unpopular apps are barely discovered by the users if the app stores do not recommend them. Therefore, an app search engine is necessary for both the users and app developers.
The term app or application is “a computer program designed for a specific task or use”. In other words, the app is defined by its functions that enable the users to perform specific tasks. In fact, 83% of app searches are made by the app function while 17% are made by an app name. Thus, a goal is to find apps based on the function that is specified by the user. Specifically, given a user query that describes a function, the desired search result can show a ranked list of apps, where the first ranked app are more likely to have the query function. For example, for a functional query “book a flight”, a user expects a search result including apps such as “Expedia Hotels & Flights” and “Orbitz—Flights, Hotels, Cars” in the top ten apps of a ranked app list since these apps meet the user's needs. Recommendation systems play an important role in human life, greatly facilitating people's daily lives through providing information to the users. The recommendation systems are generally classified into two major systems: collaborative filtering systems and content-based recommendation systems. The collaborative filtering systems recommend items that other users with similar tastes preferred in the past while the content-based systems generally recommend items similar to those preferred by the user in the past. The recommendation systems are closely related to retrieval systems in that they rank objects to fulfill user's needs.
However, the retrieval systems are different from the recommendation systems mainly because the user explicitly expresses his or her needs in the retrieval systems while the recommendation systems suggest the items based on the user profile without asking for the user's needs. The recommendation systems may be more convenient for the user since the user does not need to input his or her needs, but the items suggested by the recommendation systems are likely to be less accurate than the retrieval systems since the recommendation systems barely know what the user currently needs. In addition, the recommendation systems encounter a cold start problem when the user does not have a profile yet or when the recommendation system does not have enough transaction data yet, while the retrieval systems do not require such data.
The disclosed methods and systems are directed to solve one or more problems set forth above and other problems.